From: Andrew Cooper Date: Thu, 18 Feb 2016 14:07:59 +0000 (+0100) Subject: avoid left shifting into a sign bit X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~1724 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=035a4e9ae4d7869a512772e986debea752f85b28;p=xen.git avoid left shifting into a sign bit Clang 3.8 notices, and objects because it is undefined behaviour. "error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]" Use unsigned constants rather than signed ones. Signed-off-by: Andrew Cooper Acked-by: Feng Wu Acked-by: Jan Beulich --- diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 624a2667af..7179d677e7 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1675,7 +1675,7 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags) ASSERT(!in_irq()); if ( xenheap_bits && (memflags >> _MEMF_bits) > xenheap_bits ) - memflags &= ~MEMF_bits(~0); + memflags &= ~MEMF_bits(~0U); if ( !(memflags >> _MEMF_bits) ) memflags |= MEMF_bits(xenheap_bits); diff --git a/xen/drivers/passthrough/vtd/x86/ats.c b/xen/drivers/passthrough/vtd/x86/ats.c index 7c797f6bed..334b9c1159 100644 --- a/xen/drivers/passthrough/vtd/x86/ats.c +++ b/xen/drivers/passthrough/vtd/x86/ats.c @@ -133,7 +133,7 @@ int dev_invalidate_iotlb(struct iommu *iommu, u16 did, case DMA_TLB_GLOBAL_FLUSH: /* invalidate all translations: sbit=1,bit_63=0,bit[62:12]=1 */ sbit = 1; - addr = (~0 << PAGE_SHIFT_4K) & 0x7FFFFFFFFFFFFFFF; + addr = (~0UL << PAGE_SHIFT_4K) & 0x7FFFFFFFFFFFFFFF; rc = qinval_device_iotlb(iommu, pdev->ats_queue_depth, sid, sbit, addr); break; @@ -145,7 +145,7 @@ int dev_invalidate_iotlb(struct iommu *iommu, u16 did, sbit = size_order ? 1 : 0; /* clear lower bits */ - addr &= ~0 << PAGE_SHIFT_4K; + addr &= ~0UL << PAGE_SHIFT_4K; /* if sbit == 1, zero out size_order bit and set lower bits to 1 */ if ( sbit )